package br.ucb.jogo.managedbean;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;

import br.ucb.jogo.interfaces.DAO;
import br.ucb.jogo.negocio.Classe;
import br.ucb.jogo.negocio.Usuario;
import br.ucb.jogo.negocioDAO.UsuarioDAO;

import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

@ManagedBean (name = "usuarioManagedBean")
@SessionScoped

public class UsuarioManagedBean {
	
	private DAO<Usuario> dao;
	private Usuario usuario;
	private List<Classe> classes; 
	private List<Usuario> usuarios;
	
	public String salvar() throws SQLException{
		System.out.println(getUsuario().getSenha());
		if (getUsuario().getId() == 0) {
			getDao().insert(getUsuario());
		}
		else {
			getDao().update(getUsuario());
		}
		setUsuario(new Usuario());
		setUsuarios(getDao().select());
		return "listaUsuarios";
	}
	
	public void excluir(ActionEvent evento) throws SQLException {
		setUsuario((Usuario)evento.getComponent().getAttributes().get("usuario"));
		
		System.out.println(getUsuario());
		
		try {
			getDao().delete(getUsuario());
		} catch (MySQLIntegrityConstraintViolationException  e) {
			e.printStackTrace();
		}		
		setUsuario(new Usuario());
		setUsuarios(getDao().select());
	}
	
	public List<Classe> getClasses() {
		return classes;
	}
	
	public void setClasses(List<Classe> classes) {
		this.classes = classes;
	}

	public UsuarioManagedBean() {
		setDao(new UsuarioDAO());
		setUsuario(new Usuario());
		Classe c1 = new Classe(1,"Humano");
		Classe c2 = new Classe(2,"Magico");
		setClasses(new ArrayList<Classe>());
		getClasses().add(c1);
		getClasses().add(c2);
			
	}
	
	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	public DAO<Usuario> getDao() {
		return dao;
	}

	public void setDao(DAO<Usuario> dao) {
		this.dao = dao;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
}
